'\" te
'\"! tbl|eqn | mmdoc
'\"macro stdmacro
.ds Vn Version 1.2
.ds Dt 24 September 1999
.ds Re Release 1.2.1
.ds Dp Jan 14 18:30
.ds Dm 01 arrayelem
.ds Xs 50127 5 arrayelement.gl
.TH GLARRAYELEMENT 3G
.SH NAME
.B "glArrayElement
\- render a vertex using the specified vertex array element

.SH C SPECIFICATION
void \f3glArrayElement\fP(
GLint \fIi\fP )
.nf
.fi

.EQ
delim $$
.EN
.SH PARAMETERS
.TP \w'\f2i\fP\ \ 'u 
\f2i\fP
Specifies an index into the enabled vertex data arrays. 
.SH DESCRIPTION
\%\f3glArrayElement\fP commands are used within \%\f3glBegin\fP/\%\f3glEnd\fP pairs to
specify vertex and attribute data for point, line, and polygon
primitives. If \%\f3GL_VERTEX_ARRAY\fP is enabled when \%\f3glArrayElement\fP is called, a
single vertex is drawn, using 
vertex and attribute data taken from location \f2i\fP of the enabled
arrays. If \%\f3GL_VERTEX_ARRAY\fP is not enabled, no drawing occurs but
the attributes corresponding to the enabled arrays are modified. 
.P
Use \%\f3glArrayElement\fP to construct primitives by indexing vertex data, rather than
by streaming through arrays of data in first-to-last order. Because
each call specifies only a single vertex, it is possible to explicitly
specify per-primitive attributes such as a single normal per
individual triangle.
.P
Changes made to array data between the execution of \%\f3glBegin\fP and the 
corresponding execution of \%\f3glEnd\fP may affect calls to \%\f3glArrayElement\fP that are made
within the same \%\f3glBegin\fP/\%\f3glEnd\fP period in non-sequential ways.
That is, a call to 
.br
\%\f3glArrayElement\fP that precedes a change to array data may 
access the changed data, and a call that follows a change to array data 
may access original data.
.SH NOTES
\%\f3glArrayElement\fP is available only if the GL version is 1.1 or greater.
.P
\%\f3glArrayElement\fP is included in display lists. If \%\f3glArrayElement\fP is entered into a
display list, the necessary array data (determined by the array
pointers and enables) is also entered into the display list. Because
the array pointers and enables are client-side state, their values
affect display lists when the lists are created, not when the lists
are executed.
.SH SEE ALSO 
\%\f3glClientActiveTextureARB(3G)\fP,
\%\f3glColorPointer(3G)\fP,
\%\f3glDrawArrays(3G)\fP,
\%\f3glEdgeFlagPointer(3G)\fP,
\%\f3glGetPointerv(3G)\fP,
\%\f3glIndexPointer(3G)\fP,
\%\f3glInterleavedArrays(3G)\fP,
\%\f3glNormalPointer(3G)\fP,
\%\f3glTexCoordPointer(3G)\fP,
\%\f3glVertexPointer(3G)\fP
